package org.example.backend.util;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.nio.file.Paths;
import java.util.UUID;

/**
 * 文件上传工具类
 */
@Component
public class FileUtil {

    /**
     * 上传文件
     *
     * @param file 文件
     * @param type 文件类型（目录）
     * @return 文件访问路径
     * @throws IOException IO异常
     */
    public String uploadFile(MultipartFile file, String type) throws IOException {
        // 获取文件名
        String originalFilename = file.getOriginalFilename();
        // 获取文件后缀
        String suffix = "";
        if (originalFilename != null && originalFilename.contains(".")) {
            suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
        }
        // 生成新的文件名
        String fileName = UUID.randomUUID().toString().replaceAll("-", "") + suffix;

        // 动态获取项目路径
        String projectDir = System.getProperty("user.dir");

        // 构建上传目录 - 修改为resources/upload路径
        String uploadDir = Paths.get(projectDir,"src", "main", "resources", "upload", type).toString();

        // 确保目录存在
        File dirFile = new File(uploadDir);
        if (!dirFile.exists()) {
            boolean created = dirFile.mkdirs();
        }

        // 构建完整的文件路径
        File targetFile = new File(dirFile, fileName);

        // 保存文件
        file.transferTo(targetFile);

        // 检查文件是否成功保存

        // 返回文件访问路径
        return "/upload/" + type + "/" + fileName;
    }
}
